package com.myapp.tools;

import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;

import com.myapp.tools.bean.ToolsConfig;
import com.myapp.tools.configbuilder.Config;
import com.myapp.tools.dbbuilder.DB;
import com.myapp.tools.interfaces.ITool;
import com.myapp.tools.msgbuilder.Msg;

public class AppTools {
	// 日志
	private static Logger log = Logger.getLogger(AppTools.class);

	private static Map<String, Class<? extends ITool>> toolMap = new HashMap<String, Class<? extends ITool>>();

	public static void main(String[] args) {
		if (args.length < 1) {
			System.out.println("Usage:AppTools [RegistedToolName] [args]");
		} else {
			// 工具注册
			AppTools.registTools();
			// 初始化配置
			ToolsConfig.init();
			// 启动Tools
			if (AppTools.toolMap.containsKey(args[0].toUpperCase())) {
				try {
					ITool tool = toolMap.get(args[0].toUpperCase())
							.newInstance();
					tool.run(args);
				} catch (Exception e) {
					AppTools.log.error(
							String.format("Tool[%s] init failure!",
									toolMap.get(args[0])), e);
					System.exit(0);
				}
			}
		}
	}

	public static void registTools() {
		// 消息生成器 :
		// 启动：D:\project\AppTools\resource Msg
		AppTools.toolMap.put("Msg".toUpperCase(), Msg.class);

		// 配置文件bean
		// 启动：D:\project\AppTools\resource Config
		AppTools.toolMap.put("Config".toUpperCase(), Config.class);

		//
		// DAO and entity
		AppTools.toolMap.put("DB".toUpperCase(), DB.class);
	}
}
